home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Resources / System / SnoopDos / Readme.source < prev    next >
Text File  |  2001-04-12  |  9KB  |  196 lines

  1.  
  2.                         SnoopDos 3.7 -- Source Code Release
  3.  
  4.            Copyright © Eddy Carroll, September 1994. Freely distributable.
  5.  
  6.            Updated by Luca Longone and Massimo Tantignone in January 2000.
  7.  
  8.        Updated by Grzegorz Chmie and Thomas Richter in March 2000.
  9.  
  10.        Updated again in August 2000 by Thomas Richter. 
  11.  
  12.        Updated yet again in February 2001 by Thomas Richter.
  13.  
  14.        Updated to 3.7 in March/April 2001 by Thomas Richter.
  15.  
  16.  
  17. NOTE ABOUT THE 3.7 UPDATE
  18.  
  19.    The 3.7 release fixes mainly some cosmetic issues. First of all, the
  20.    semaphore arbitration time changed from 3.6 to 3.7 and was chosen much
  21.    smaller, and was made dependent on task priorities. Even though the 3.6
  22.    should not have deadlocked ever, it might have happened that the System
  23.    appeared frozen for half a minute due to lots of semaphore timeouts.
  24.    Furthermore, the 3.7 adds Forbid()/Permit() around FindTask() and FindPort();
  25.    they are not really required as the corresponding tasks and ports cannot
  26.    go away in any event, but PatchWork complained about it with a warning.
  27.  
  28.  
  29. NOTE ABOUT THE 3.6 UPDATE
  30.  
  31.     Note that there's no 3.5 update, it was an internal release that never
  32.     made it to the public.
  33.     The 3.6 update fixes two major bugs. The first bug is that the LoadSeg()
  34.     patch did not kept care about overlayed files and therefore might have
  35.     trashed overlayed programs. Note that LoadSeg() takes actually three
  36.     arguments and not one!
  37.     The second bug is even more severe, and is only partially fixed by this
  38.     release. SnoopDos semaphore handling was and still is extremly fragile.
  39.     SnoopDos 3.4 and before could have run into a race condition caused by
  40.     a cycling semaphore lock-up of three partners the patch code did not and
  41.     cannot check for. SnoopDos, workbench and input device hung then
  42.     simultaneously.
  43.     There are other race conditions of this kind, and all of them could only
  44.     be fixed if the patch code of SnoopDos would be completely re-designed,
  45.     a job I currently cannot and will not do.
  46.     Therefore, SnoopDos 3.6 contains a workaround and uses now a semaphore
  47.     mechanism which may "time out". The net effect is that at least the most
  48.     common semaphore deadlock should be avoidable now, but at the price that
  49.     the SnoopDos main window cannot be guaranteed to be 100% accurately up-
  50.     dated. Hence, in case the main window seems to have forgotten to update
  51.     its snoop list, or the result codes of some snoop entries are missing, or
  52.     some reports seem to be missing at all, don't worry! The alternative in 
  53.     these cases would have been to deadlock your system. As a side effect,
  54.     the ugly layers semaphore check was disabled now as it is no longer
  55.     needed, and in fact never really worked as it was unable to detect a
  56.     cyclic deadlock of three or more partners.
  57.  
  58.  
  59. NOTE ABOUT THE 3.4 UPDATE
  60.  
  61.     This update fixes one feature, and one bug. The feature is that the
  62.     stack swap code was removed from SnoopDos 3.2 and up, and since people
  63.     tend not to read the instructions, SnoopDos crashed on some machines due
  64.     to stack overflow. The 3.4 release checks therefore for its stack size
  65.     and will increase it to the minimal recommended size.
  66.     The bug is that a possible race condition when closing the main window
  67.     was overlooked. The 3.3 and earlier releases could have caused some
  68.     "hits" in case the main window was closed while some other program run
  69.     in the patch routines.
  70.  
  71.  
  72. NOTE ABOUT THE 3.3 UPDATE
  73.  
  74.     This update fixes a flaw of the 3.2 release that somehow was unnoticed.
  75.     The 3.2 release could not be run from Workbench, due to an unexpected
  76.     re-define of the WBenchMsg variable to _WBenchMsg in some of the SAS/C
  77.     headers which broke the new startup code. I really did not expect 
  78.     this, sorry. Except the version number, and a slightly different compiler
  79.     option, nothing changed.
  80.  
  81. NOTE ABOUT THE 3.2 UPDATE
  82.  
  83.     This new update fixes one frequent hit I got when SnoopDos logged some
  84.     system calls while a second task was working on the layers. The
  85.     problem is that some graphics.library and rtg calls NULL the Rastport->
  86.     Layer field temporarely, and SnoopDos did not check before using this
  87.     pointer.
  88.     Additionally, the SnoopDos iconfication code did not work with "newicons"
  89.     which store their image data in an unorthogonal way. This was fixed by
  90.     Grzegorz Chmie, I used his code almost unchanged. Thanks!
  91.  
  92.     The file snoopdos.h has been enhanced to contain all exported functions
  93.     completely, to allow a clean recompile using the registerized parameters
  94.     model of SAS/C.
  95.  
  96.     Two obsolete amiga.lib calls, CreateExtIO() and DeleteExtIO() have been
  97.     replaced by their exec.library equivalence for orthogonality.
  98.     
  99.     All changes in the code have been marked by "THOR" so you may easely
  100.     identify my changes and additions.
  101.  
  102.     You can find the archive with the executable compiled from this source
  103.     code on Aminet (util/moni/snoopdos32.lha).
  104.  
  105.     For further questions, contact me at:
  106.  
  107.     thor@math.tu-berlin.de    (Thomas Richter)
  108.  
  109.  
  110. NOTE ABOUT THE 3.1 UPDATE
  111.  
  112.     This update removes an Enforcer hit which can happen with version 3.0
  113.     when a program is launched from ToolManager's dock and SnoopDos is
  114.     running with its "SendRexx" patch turned on. Said hit doesn't seem to
  115.     cause any harm, however it can be an annoyance for people which have
  116.     Enforcer running all the time.
  117.     The hit is apparently due to the way ToolManager sets up its message
  118.     port and only happens when SnoopDos 3.0 is running. Since we can't fix
  119.     ToolManager right now, we made SnoopDos able to avoid the hit, by adding
  120.     a safety check on the memory type at line 4466 in the "patches.c" module.
  121.  
  122.     The following files have been updated for this release:
  123.  
  124.     snooptext.h           snooptext.ct           snooptext.cd
  125.     SnoopDos.Roadmap      snoopdos.c             patches.c
  126.  
  127.     All files other than "patches.c" have been changed just to update the
  128.     version information; no changes were made to the actual code.
  129.  
  130.     You can find the archive with the executable compiled from this source
  131.     code on Aminet (util/moni/snoopdos31.lha).
  132.  
  133.     Note: references to PGP in the documentation aren't valid anymore for
  134.     SnoopDos versions greater than 3.0. If you need authentication, please
  135.     write to one of the following e-mail addresses:
  136.  
  137.     llong@tin.it, hexaae@tiscalinet.it (Luca Longone)
  138.     tanti@intercom.it (Massimo Tantignone)
  139.     ecarroll@iol.ie (Eddy Carroll)
  140.     thor@math.tu-berlin.de (Thomas Richter)
  141.  
  142.     The rest of this file is unchanged from the original Readme.source file
  143.     as found in the SnoopDos 3.0 source code distribution.
  144.  
  145.  
  146. INTRODUCTION
  147.  
  148.     SnoopDos patches a variety of AmigaDOS library functions that
  149.     are commonly called by other programs and allows you to monitor
  150.     the activities carried out by those programs.
  151.  
  152.     The source code allows you to examine how SnoopDos operates. You
  153.     may find it useful as example code if you are interested in any
  154.     of the following:
  155.  
  156.       - patching system library functions
  157.       - creating font-sensitive gadtools or BOOPSI GUI interfaces
  158.         without the help of a third party GUI library
  159.       - accessing AmigaGuide help
  160.       - copying text to the clipboard
  161.       - allowing localisation of all program text strings
  162.       - supporting drag & drop operations
  163.       - seeing how a medium sized Amiga application is constructed
  164.  
  165.     I don't claim that this code is perfect but it does have the advantage
  166.     of actually working, so it's a useful starting point.
  167.  
  168.     You will probably also want to obtain the companion binary archive
  169.     snoopdos30.lha, available in the /pub/aminet/util/moni directory on
  170.     AmiNet. This contains the SnoopDos executable, and also an extensive
  171.     AmigaGuide help file which should prove useful while browsing the
  172.     source code.
  173.  
  174.     See the file SnoopDos.Roadmap inside the source directory for information
  175.     about how the source code is organised.
  176.  
  177.  
  178. DISTRIBUTION CONDITIONS
  179.  
  180.     You may freely use portions of the SnoopDos source code in your
  181.     own programs if you wish. However, if you use two or more complete
  182.     functions from the SnoopDos code, you must acknowledge the origin
  183.     of those functions in your documentation and source code.
  184.  
  185.     You may modify the SnoopDos source code to create new versions of
  186.     SnoopDos for your own use only. You may not redistribute such new
  187.     versions without my explicit permission.
  188.  
  189.  
  190. AUTHOR
  191.  
  192.     You can contact the author at:
  193.  
  194.         ecarroll@maths.tcd.ie
  195.         ecarroll@cix.compulink.co.uk
  196.